home *** CD-ROM | disk | FTP | other *** search
-
- var aLevels = new Array();
- aLevels[0] = "http://jgillick.nettripper.com/bandwidthtest/test/level_1.txt";
- aLevels[1] = "http://jgillick.nettripper.com/bandwidthtest/test/level_2.txt";
- aLevels[2] = "http://jgillick.nettripper.com/bandwidthtest/test/level_3.txt";
- aLevels[3] = "http://jgillick.nettripper.com/bandwidthtest/test/level_4.txt";
- aLevels[4] = "http://jgillick.nettripper.com/bandwidthtest/test/level_5.txt";
-
- var iSum = 0;
- var iCount = 0;
- var iLevelCount = 0;
- var iAll = 0;
- var iStop = 5;
-
- var oLogs = null;
- var oLogItems = null;
- var oTotal = null;
- var oButton = null;
- var oProgress = null;
- var oConnection = null;
-
- var sStartTime = 0;
-
- function bandwidthtest_init(){
- oLogs = document.getElementById("log-tree");
- oLogItems = document.getElementById("log-items");
- oTotal = document.getElementById("results-field");
- oButton = document.getElementById("test-button");
- oProgress = document.getElementById("test-progress");
- oConnection = document.getElementById("connection-list");
-
- setTimeout("bandwidthtest_autoUpdate()", 500);
- }
-
- function bandwidthtest_reset(){
- iSum = 0;
- iCount = 0;
- iLevelCount = 0;
- iAll = 0;
- oTotal.value = "";
- oProgress.value = 0;
-
- // Remove tree items
- var aRows = oLogItems.childNodes;
- for(var i = (aRows.length - 1); i >= 0 ; i--){
- oLogItems.removeChild(aRows[i]);
- }
- }
-
- function bandwidthtest_runTest(iLevel){
- bandwidthtest_reset();
-
- oButton.disabled = true;
- oProgress.style.display = "block";
-
- // Get Test Files
- var aTmpLevels = new Array();
- var oPrefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
- if(oPrefs.prefHasUserValue("bandwidthtest.files.1") && oPrefs.getCharPref("bandwidthtest.files.1").search(/[a-z0-9]/i) > -1)
- aTmpLevels[aTmpLevels.length] = oPrefs.getCharPref("bandwidthtest.files.1");
- if(oPrefs.prefHasUserValue("bandwidthtest.files.2") && oPrefs.getCharPref("bandwidthtest.files.2").search(/[a-z0-9]/i) > -1)
- aTmpLevels[aTmpLevels.length] = oPrefs.getCharPref("bandwidthtest.files.2");
- if(oPrefs.prefHasUserValue("bandwidthtest.files.3") && oPrefs.getCharPref("bandwidthtest.files.3").search(/[a-z0-9]/i) > -1)
- aTmpLevels[aTmpLevels.length] = oPrefs.getCharPref("bandwidthtest.files.3");
- if(oPrefs.prefHasUserValue("bandwidthtest.files.4") && oPrefs.getCharPref("bandwidthtest.files.4").search(/[a-z0-9]/i) > -1)
- aTmpLevels[aTmpLevels.length] = oPrefs.getCharPref("bandwidthtest.files.4");
- if(oPrefs.prefHasUserValue("bandwidthtest.files.5") && oPrefs.getCharPref("bandwidthtest.files.5").search(/[a-z0-9]/i) > -1)
- aTmpLevels[aTmpLevels.length] = oPrefs.getCharPref("bandwidthtest.files.5");
-
- if(aTmpLevels.length > 0)
- aLevels = aTmpLevels;
-
- // Get Connection
- if(oConnection.selectedItem.value != "-1"){
- iStop = 3;
- iLevel = parseInt(oConnection.selectedItem.value);
-
- if(isNaN(iLevel) || typeof(aLevels[iLevel]) == 'undefined'){
- iLevel = 0;
- iStop = 5;
- }
- }
-
- setTimeout("bandwidthtest_fetchUrl("+ iLevel +")", 500);
- }
-
- function bandwidthtest_endTest(){
-
- iServerTime = 0;
- trackServerTime = false;
- oButton.disabled = false;
- oProgress.style.display = "none";
-
- if(iSum == 0)
- oTotal.value = "An error occurred";
- else
- oTotal.value = "~ "+ bandwidthtest_getBandwidthString(iSum / iCount);
-
- }
-
- function bandwidthtest_fetchUrl(iLevel){
- iAll++;
- iLevelCount++;
-
- var sUrl = aLevels[iLevel] +"?rand="+ Math.round(Math.random() * 200);
-
- try{
- var oRequest = new XMLHttpRequest();
- var iStartTime = (new Date()).getTime();
- var iTime = 0
- var iSize = 0;
- var sResponse = "";
-
- // Send Request
- oRequest.open("GET", sUrl, false);
- oRequest.send("");
-
- // Get Response
- var iStopTime = (new Date()).getTime();
- sResponse = oRequest.responseText;
-
- // Get Average
- if(sResponse.length == 0){ // no divide by zero
- bandwidthtest_logTime(sUrl, null, null, 101, "Didn't receive any data in response.");
- }
- else if(oRequest.status != 200){ // Response not 200
- bandwidthtest_logTime(sUrl, null, null, oRequest.status, oRequest.statusText);
- }
- else{
- iCount++;
-
- iTime = ((iStopTime - iStartTime) / 1000).toFixed(3); //seconds
- iSize = ((sResponse.length / 1024).toFixed(7) * 8); //kilobits
-
- // prevent divide by zero error
- if(iTime == 0)
- iTime = 0.1;
-
- iSum += parseInt((iSize / iTime).toPrecision(15));
- bandwidthtest_logTime(sUrl, iTime, iSize);
- }
-
- // Level Increment or End
- if(iAll > iStop){ // End
- bandwidthtest_endTest();
- return;
- }
- else if(iTime > 2 && iLevel > 0){ // Down a level
- iLevelCount = 0;
- iLevel--;
- }
- else if(((iLevelCount > 4 && iTime < 3) || iTime < 0.05 ) && iLevel < (aLevels.length - 1)){ // Go up one level
- iLevelCount = 0;
- iLevel++;
- }
-
- }catch(err){ bandwidthtest_logTime(sUrl, null, null, 100, err) }
-
- // Set Progress
- oProgress.value = (100 / iStop) * iAll;
-
- // Loop
- setTimeout("bandwidthtest_fetchUrl("+ iLevel +")", 100);
- }
-
- // Log Time in results tree
- function bandwidthtest_logTime(sUrl, iSeconds, iFileSize, iErrCode, sErrMsg){
- var oLogItem = document.createElement("treeitem");
- var oLogRow = oLogItem.appendChild(document.createElement("treerow"));
- var oLogDesc = oLogRow.appendChild(document.createElement("treecell"));
- oLogDesc.setAttribute("label", sUrl);
- var oLogSize = oLogRow.appendChild(document.createElement("treecell"));
- var oLogTime = oLogRow.appendChild(document.createElement("treecell"));
-
- // Set Error/Warning attributes
- if(iErrCode != null || sErrMsg != null){
- oLogSize.setAttribute("label", "ERROR");
- oLogTime.setAttribute("label", "ERROR");
-
- oLogItem.setAttribute("errcode", iErrCode);
- oLogItem.setAttribute("errmsg", sErrMsg);
- }
- else{
- oLogSize.setAttribute("label", (iFileSize / 8) +" KB");
- oLogTime.setAttribute("label", iSeconds);
- }
-
- // Append
- oLogItems.appendChild(oLogItem);
-
- // Make visible
- oLogs.treeBoxObject.ensureRowIsVisible(oLogItems.childNodes.length);
- }
-
- // Translate Bandwith
- function bandwidthtest_getBandwidthString(iTimePer){
- var sUnit = "Kb";
-
- if(iTimePer > 1000){
- iTimePer = iTimePer / 1000;
- sUnit = "Mb";
- }
- else if(sTimePer < 0.0){
- iTimePer = iTimePer * 1000;
- sUnit = "bits";
- }
-
- // Trim
- var iDec = -1;
- var sTimePer = iTimePer + "";
- if((iDec = sTimePer.indexOf(".")) > -1 && (sTimePer.length - iDec) > 2){
- sTimePer = sTimePer.substring(0, (iDec + 3));
- }
-
- return sTimePer +" "+ sUnit +"ps";
- }
-
- // Show Error
- function bandwidthtest_showError(oLogs){
- if(oLogs){
-
- try{
- var oSelected = oLogs.contentView.getItemAtIndex(oLogs.currentIndex);
-
- if(oSelected == null)
- return;
-
- var iErrorCode = oSelected.getAttribute("errcode");
- var sErrorMsg = oSelected.getAttribute("errmsg");
-
- //Title
- if(!isNaN(iErrorCode))
- document.getElementById('error-title').setAttribute("value", iErrorCode);
-
- //Description
- var oDesc = document.getElementById('error-desc');
- while(oDesc.hasChildNodes())
- oDesc.removeChild(oDesc.firstChild);
-
- oDesc.appendChild(document.createTextNode(sErrorMsg));
-
- }catch(err){ }
- }
- }
-
- // Open Options
- function tinyurl_options(){
- window.openDialog("chrome://bandwidthtest/content/options.xul", "bandwithTestOptions", "centerscreen, chrome, modal")
- }